/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Dicionario;

import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;

/**
 *
 * @author Utilizador
 */
public class Frase implements IFrase {

    int id;
    LinkedList<String> palavrasString = new LinkedList<String>();
    LinkedList<Integer> palavras = new LinkedList<Integer>();

    public Frase(String s) {

        id = s.hashCode();

        String pal;

        StringTokenizer st = new StringTokenizer(s);

        // Parte a String em palavras,transforma-as num hashcode e mete-as
        // numa lista (palavras)
        while (st.hasMoreTokens()) {
            pal = st.nextToken();
            palavrasString.add(pal);
            palavras.add(pal.hashCode());
                   }

    }
    
    
     public Frase(Frase f) {

        id = f.getId();

        palavras.addAll(f.palavras);
        palavrasString.addAll(f.palavrasString);
      

    }  
    

    public LinkedList getPalavrasDaFrase() {
        return palavras;
    }

    public int getInicio() {

        try {

            return (Integer) palavras.getFirst();
        } catch (Exception e) {
            System.err.println(e);
        }

        return -1;
    }

    public int getFim() {
        try {

            return (Integer) palavras.getLast();
        } catch (Exception e) {
            System.err.println(e);
        }

        return -1;
    }

    public void setId(int i)
    {
    
    id=i;
    }
    
    public int getId() {

        return id;
    }
    
    public boolean Contains(int i) {

       return palavras.contains(i);
           
    }
    
    public ArrayList<Integer> getCaminhos(int i) {

        ArrayList<Integer> caminhos = new ArrayList<Integer>();
        int pal;

        for (int a = 0; a < palavras.size()-1; a++) {
            
          
            if (palavras.get(a).equals(i)) {
                // System.out.println("*********"+palavras.get(a)+"=="+ i);
                //caminhos.add(palavras.get(2));
                pal = palavras.get(a+1);
                caminhos.add(pal);
              //  System.out.println(":::::::::::::::::" + i + "PALAVRA:" + pal);
                //caminhos.add(palavras.get(a + 1));
            }
        }
        return caminhos;
    }
    
    public  int getSize()
    {
    
     return palavras.size();
    
    }
    public int getNextPalavra(int index)
    {
        //if(index==palavras.indexOf(palavras.size()))    
        try {
            return palavras.get(index + 1);
        } catch (Exception exception) {
            return -1;
        }

        
        
    }
    
    public void removefirstpalavra()
    {
        palavras.removeFirst();
        palavrasString.removeFirst();
    }
    
     public void PrintFrase(){
    
    System.out.println(palavrasString.toString());
    }
    
}